package com.itjiange.service;

import com.itjiange.common.BaseResponse;
import com.itjiange.model.dto.UserQueryDto;
import com.itjiange.model.dto.UserUpdateDto;
import com.itjiange.model.pojo.User;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Service;

import java.util.List;

/**
* @author 大师的本
* @description 针对表【user】的数据库操作Service
* @createDate 2023-10-27 15:32:00
*/
//@Service
public interface UserService {
    /**
     * 用户登录
     *
     * @param userAccount
     * @param password
     * @param verCode
     * @param request
     * @return
     */
    BaseResponse<User> login(String userAccount, String password, String verCode, HttpServletRequest request);

    /**
     * 用户注册
     *
     * @param userRequestDto
     * @param verCode
     * @param request
     * @return
     */
    BaseResponse<Integer> register(String userAccount, String password, String checkPassword, String verCode, HttpServletRequest request);

    /**
     * 修改用户信息
     * @param userUpdateDto
     * @param request
     * @return
     */
    BaseResponse<Integer> update(UserUpdateDto userUpdateDto, HttpServletRequest request);

    /**
     * 用户修改头像
     * @param avatar
     * @param request
     * @return
     */
    BaseResponse<Integer> updateUserAvatar(String avatar, HttpServletRequest request);

    /**
     * 获取用户头像
     *
     * @return
     */
    BaseResponse<User> getUserMessage(HttpServletRequest request);

    /**
     * 查询所有用户
     * @return
     */
    BaseResponse<List<User>> getAllUser();

    /**
     * 删除指定 id 用户
     * @param id
     * @return
     */
    BaseResponse<Integer> deleteUserById(int id);

    /**
     * 分页查询数据
     * @param currentPage 当前页面是第几页
     * @param pageSize 一页显示几条数据
     * @return
     */
    BaseResponse<List<User>> getUsersByPage(int currentPage, int pageSize);

    /**
     * 获取用户总数
     * @return
     */
    BaseResponse<Integer> getAllUsersCount();

    /**
     * 通过条件查询
     * @param userQueryDto
     * @return
     */
    BaseResponse<List<User>> getUsersByCondition(UserQueryDto userQueryDto);
}
